#include "head.h"
/*
#include <pthread.h>

int pthread_join(pthread_t thread,void **retval);
功能：
    1、在主线称重 等待 线程结束 会阻塞等待 直到目标结束
    2、获取主线程退出状态 通过 retval 来获取退出的状态 通过return 返回的值
参数：
    thread：被等待的线程的标识符，即目标线程的 p_thread_t 类型的标识符
    retval：一个指向指针的指针，用于存储等待线程的退出状态。
返回值：
    成功：返回0
    失败：返回错误编号
*/

void *func_2(void *i)
{
    //线程任务
    printf("我是%d号线程 func_2\n",*((int *)i));
}

void func_1(void *v)
{
    pthread_t Tid[5];
    int arr[5] = {1,2,3,4,5};

    printf("我是主线程 : func_1\n");
    //循环创建线程
    for(size_t i=0;i<5;i++)
    {
        if(0 != pthread_create(&Tid[i],NULL,func_2,(void *)&arr[i]))
        {
            printf("pthread_create error");
            return 0;
        }
    }

    //循环回收线程
    for(size_t i=0;i<5;i++)
    {
        pthread_join(Tid[i],NULL);//阻塞回收
    }
}

int main(int argc,char const *argv[])
{
    //接受线程号
    pthread_t Tid=0;

    //创建线程
    if(0 != pthread_create(&Tid,NULL,func_1,NULL))
    {
        printf("pthread_create error");
        return 0;
    }
    
    pthread_join(Tid,NULL);//阻塞回收
    return 0;
}

//gcc 09_线程_回收.c -o 09_线程_回收 -lpthread